home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / pao / towns / paolib / realcall.asm < prev    next >
Assembly Source File  |  1991-10-18  |  2KB  |  82 lines

  1. ;==============================================================================
  2. ;    << 386ASM V2.0 >>  for  FM TOWNS
  3. ;==============================================================================
  4. .386p
  5.         PAGE    60,132
  6.         NAME    RealCall
  7.         TITLE    real call procedure
  8. ;==============================================================================
  9. ;    リアルモードプログラムの呼出
  10. ;
  11. ;    < High C からの呼出形式 >
  12. ;    RealCall( Address ) ;
  13. ;
  14. ;    < note > : TABS = 4
  15. ;
  16. ;    < History >
  17. ;    1990.03.14 : CREATE
  18. ;    1991.04.13 : 清書
  19. ;
  20. ;    ★ 注意
  21. ;        本プログラムを使用する時には、リンク時の最初にREALHEAD.OBJを指定して
  22. ;        下さい。
  23. ;
  24. ;    Programmed by Y.Hirata
  25. ;==============================================================================
  26. ;
  27. INCLUDE    hc.inc                                ;
  28. ;
  29. CGROUP    GROUP pmcode, CODE                    ;
  30. DGROUP    GROUP rmdata, pmdata, DATA            ;
  31. ;
  32. ;--------------------------------------------
  33.         public    RealCall                    ;
  34. ;--------------------------------------------
  35. ;
  36. pmcode    SEGMENT                                ;
  37.         ASSUME    cs:CGROUP                    ;
  38. ;
  39. ;********************************************
  40. ;    REAL CALL UTILITY
  41. ;********************************************
  42.         ALIGN    4                            ; dword boundary
  43. RealCall    PROC    NEAR                    ;
  44.             push    ebp                        ;
  45.             mov        ebp,esp                    ; スタックフレーム形成
  46. ;
  47.             push    esi                        ;
  48.             push    edi                        ;
  49.             push    ebx                        ;
  50.             push    ecx                        ;
  51.             push    es                        ;
  52.             mov        bx,8[ebp]                ;
  53.             push    bx                        ; 呼び出すリアルモードプロシジャのアドレス
  54. ;
  55.             push    ds                        ;
  56.             pop        es                        ; es = ds
  57.             xor        ebx,ebx                    ;
  58.             mov        ecx,OFFSET _realend        ;
  59.             mov        ax,0250fh                ; ネイティブ->リアル の アドレス変換
  60.             int        INT_DOS                    ;
  61. ;
  62.             mov        ebx,ecx                    ; セグメント
  63.             pop        bx                        ; オフセット
  64.             mov        ecx,0                    ;
  65.             mov        ax,0250eh                ; リアルモードプロシジャの呼出
  66.             int        INT_DOS                    ;
  67. ;    
  68.             pop        es                        ;
  69.             pop        ecx                        ;
  70.             pop        ebx                        ;
  71.             pop        edi                        ;
  72.             pop        esi                        ;
  73. ;
  74.             pop        ebp                        ; スタックフレームの開放
  75.             ret                                ;
  76. RealCall    ENDP                            ;
  77. ;
  78. pmcode        ENDS                            ;
  79. ;
  80.         END
  81.  
  82.